package com.xiaolin.designmode.builder;

/**
 * @ClassName AbstractMotorBuilder
 * @Description 抽象构建者
 * @Detail 将一个复杂对象的构造与它的表示分离，使同样的构建过程可以创建不同的表示，这样的设计模式被称为建造者模式
 *          1、步骤：
 *              1、创建一个产品类
 *              2、创建一个抽象构建者
 *              3、创建若干具体构建者
 *              4、创建一个指挥者
 *              5、测试
 *          2、总结：
 *              1、角色：
 *                  1、产品
 *                      包含多个复杂组件的对象（比如摩托车有车架、发动机、轮胎等等）
 *                  2、一个抽象构建者
 *                      包含创建产品各个子部件的抽象方法，这些方法有先后顺序，结合起来就可以创建出一个复杂产品
 *                  3、若干个具体构建者
 *                      实现了抽象建造者接口，
 *                  4、指挥者
 *                      调用建造者中的方法完成复杂对象的创建
 *                  5、客户端
 *                      进行测试
 *               2、适用范围
 *                  1、构建复杂的对象，这些对象需要划分成几个组成部分分别构建，如计算机，计算机是由 CPU、主板、内存、硬盘、显卡、
 *                  机箱、显示器、键盘、鼠标等部件组装而成的
 *                  2、所有这些产品都是由多个部件构成的，各个部件可以灵活选择，但其创建步骤都大同小异。如该构建者可生产本田的摩托车，也可生产宝马的摩托车
 *
 * @Author MyPC
 * @Date 2020/10/30
 * @Version 1.0
 */
public abstract class AbstractMotorBuilder {
    //产品对象
    protected Motorbike motorbike=new Motorbike();

    abstract void setFrame();

    abstract void setEngine();

    abstract void setTire();

    public Motorbike getMotorbike(){
        return motorbike;
    }
}
